//#include <stdio.h>
//#include <string.h>
//#include <stdlib.h>
//
//int main() 
//{
//    int T;
//    scanf_s("%d", &T);
//    while (T--)
//    {
//        char s[200005], t[200005];
//        scanf_s("%s %s", s, t);
//        int n = strlen(s);
//        int m = strlen(t);
//
//        int j = 0;
//        for (int i = 0; i < n; i++)
//        {
//            if (j < m && (s[i] == t[j] || s[i] == '?'))
//            {
//                j++;
//            }
//        }
//        if (j < m) 
//        {
//            printf("NO\n");
//        }
//        else
//        {
//            char* res = (char*)malloc(n + 1);
//            strcpy_s(res, s,6);
//            j = 0;
//            for (int i = 0; i < n; i++) 
//            {
//                if (j < m && (s[i] == t[j] || s[i] == '?')) 
//                {
//                    if (s[i] == '?') 
//                    {
//                        res[i] = t[j];
//                    }
//                    j++;
//                }
//                else if (s[i] == '?') 
//                {
//                    res[i] = 'a';
//                }
//            }
//            printf("YES\n%s\n", res);
//            free(res);
//        }
//    }
//    return 0;
//}

#include <stdio.h>
#include <stdlib.h>

int compare(const void* a, const void* b)
{
    return (*(int*)a - *(int*)b);
}

int lower_bound(int* arr, int n, int x) 
{
    int left = 0, right = n;
    while (left < right) 
    {
        int mid = left + (right - left) / 2;
        if (arr[mid] < x) 
        {
            left = mid + 1;
        }
        else
        {
            right = mid;
        }
    }
    return left;
}

int upper_bound(int* arr, int n, int x) 
{
    int left = 0, right = n;
    while (left < right)
    {
        int mid = left + (right - left) / 2;
        if (arr[mid] <= x) 
        {
            left = mid + 1;
        }
        else
        {
            right = mid;
        }
    }
    return left;
}

int main() 
{
    int n, q;
    scanf_s("%d %d", &n, &q);
    int* arr = (int*)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++)
    {
        scanf_s("%d", &arr[i]);
    }

    qsort(arr, n, sizeof(int), compare);

    for (int i = 0; i < q; i++) 
    {
        int l, r;
        scanf_s("%d %d", &l, &r);
        int left_index = lower_bound(arr, n, l);
        int right_index = upper_bound(arr, n, r);
        printf("%d\n", right_index - left_index);
    }

    free(arr);
    return 0;
}